# 引入合适的包
from skimage import io
import matplotlib.pyplot as plt
import cv2 as cv

# 读取stop和leaves的彩图
stop = io.imread("stop.jpg")  # 读入stop.jpg RGB图
leaves = io.imread("leaves.jpg")  # 读入leaves.jpg RGB图

# 获得stop图中需要被替代部分的位置的掩模
avg = cv.imread("stop.jpg", 0)  # stop的灰度图
r = stop[:, :, 0]  # stop的红色通道图
mask = r > avg * 1.4  # 获取红色占主导色位置的掩模，严格系数设置为1.4

# 直接把月球的内容放入到猴子的需要被替代的内容对等的位置上
stop2 = io.imread("stop.jpg")  # 重新读取stop的彩图，以免修改覆盖的一个stop
h, w = stop2.shape[:2]  # 获得stop的高和宽
stop2[mask] = leaves[:h, :w][mask]  # 内容替换
# 注意, 因为图像大小不一定一致，所以要确保两个数组的结果要对等才能进行等价索引替换

fig, ax = plt.subplots(1, 4, figsize=(15, 4))
ax[0].imshow(stop)
ax[1].imshow(leaves)
ax[2].imshow(mask, cmap='gray')
ax[3].imshow(stop2)

plt.tight_layout()
plt.savefig("out.png")
plt.show()
